package com.hxk.sso.server.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;

import javax.annotation.Resource;

/**
 * 类描述
 **/
@Configuration
@EnableAuthorizationServer  // 开启授权服务器 AuthorizationServerConfigurerAdapter 授权服务器配置类
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
    @Resource
    PasswordEncoder passwordEncoder;  // 注入密码编码器

    /**
     * 配置客户端信息
     * @param clients
     * @throws Exception
     */
    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        // 使用内存中的存储来配置客户端信息
        clients.inMemory()
               // 配置客户端ID为"sso"
               .withClient("sso")
               // 设置客户端的密钥，使用passwordEncoder进行编码
               .secret(passwordEncoder.encode("123"))
               // 自动批准客户端的请求
               .autoApprove(true)
               // 设置客户端的重定向URI列表
               .redirectUris("http://localhost:8084/login", "http://localhost:8085/login")
               // 设置客户端的权限范围为"user"
               .scopes("user")
               // 设置访问令牌的有效期为7200秒（2小时）
               .accessTokenValiditySeconds(7200)
               // 设置客户端支持的授权类型为"authorization_code"
               .authorizedGrantTypes("authorization_code");
    }
}
